import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import postCssPxToRem from 'postcss-pxtorem'

//element-ui-plus
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()]
    }),
    Components({
      resolvers: [ElementPlusResolver()]
    })
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  css: {
    postcss: {
      plugins: [
        postCssPxToRem({
          // 自适应，px>rem转换
          rootValue: 19.2,
          propList: ['*'] // 需要转换的属性，这里选择全部都进行转换
        })
      ]
    }
  },

  server: {
    proxy: {
      // 匹配请求的一整个路径的前面是否有符合的，和调用String.startsWith方法一样
      // 比如上面请求 `'/api/admin/logout'.startsWith('/api')`,所以匹配成功
      '/api': {
        target: '后端请求的地址', // 代理的后端给的目标地址
        // 开发模式，默认的127.0.0.1,开启后代理服务会把origin修改为目标地址
        changeOrigin: true,
        // secure: true, // 是否https接口
        // ws: true, // 是否代理websockets

        // 路径重写 ****
        // 例子：
        // 没有写 路径重写之前 的请求: http://localhost:8000/api/admin/logout
        //  写了  路径重写之后 的请求：你写的target + admin/logout
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  }
})
